#include "stdio_impl.h"

int ungetc(int c, FILE *f)
{
    if (c == EOF) return c;

    FLOCK(f);

    if (!f->rpos) __toread(f);
    if (!f->rpos || f->rpos <= f->buf - UNGET) {
        FUNLOCK(f);
        return EOF;
    }

    *--f->rpos = c;
    f->flags &= ~F_EOF;

    FUNLOCK(f);
    return (unsigned char)c;
}
